function fn() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('成功之后的数据')
      //   reject()
    }, 1000)
  })
}
// // promise是一个promise实例
const promise = fn()

// 如果promise成功了,则await promise下面的代码才会执行,如果promise失败了,则await promise下面的代码不会执行了
// ;(async function () {
//   // 注意: await必须被一个异步函数包裹.而且必须是离await最近的那个函数定义成异步函数
//   await promise
//   //   注意: await后面可以写任何的js表示式,但是这么写毫无意义.await主要是和promise配合使用.减少回调地狱
//   //   await (1 + 1)

//   console.log('promise成功了')
// })()

// xxx函数前面加的是async,则这个函数就变成了一个异步函数.异步函数的返回值也是一个promise实例
// const result = async function xxx() {
//   return undefined
// }
// console.log(result())
// const result = async function xxx() {
//   // 这个函数中返回什么,则promise成功的value值就是什么
//   return false
// }
// const promise = result()

;(async function () {
  const jg = await promise
  console.log(jg) // jg就是promise成功之后的value属性的值
})()
